/**
@author		Jong Min, Lee
@date		  01/21/2014
@brief		viewer global instance set

copyright(c) Tae Young Soft. All right reserved. 2014
*/
#pragma once

#include "Taurus_Viewer/IVGlobalInstanceSet.h"
#include "Taurus_Util/Macros.h"

class CVGlobalInstanceSet : public IVGlobalInstanceSet
{
private:
  /**
  @brief		default constructor
  */
  CVGlobalInstanceSet();

  DISALLOW_COPY_AND_ASSIGN(CVGlobalInstanceSet);

public:
  /**
  @brief		destructor
  */
  ~CVGlobalInstanceSet();

  /**
  @brief		get pointer to the single instance of viewer global instance set
  @return		pointer to the single instance of viewer global instance set
  */
  static CVGlobalInstanceSet* getInstance();

  /**
  @brief		get viewer property
  @return		pointer to viewer property
  */
  virtual IViewerProperty* getViewerProperty();

  /**
  @brief		get tool data administrator
  @return		pointer to tool data administrator
  */
  virtual CToolDataAdmin* getToolDataAdmin();

  /**
  @brief		get application global instance set
  @return		pointer to application global instance set
  */
  virtual IAppGlobalInstanceSet* getAppGlobalInstanceSet();

  /**
  @brief		set application global instance set
  @param		pointer to application global instance set
  */
  void setAppGlobalInstanceSet(IAppGlobalInstanceSet* pAppGSet);

private:
  //pointer to the single instance of viewer global instance set
  static CVGlobalInstanceSet* m_pInstance;

  //pointer to application global instance set
  IAppGlobalInstanceSet* m_pAppGInstanceSet;
};